您现在的位置是:首页 > Excel技巧>使用EXCEL VBA SQL语句实现一键查询

vba 执行sql查询语句-使用EXCEL VBA SQL语句实现一键查询

发布于2022-04-150人已围观

Excel经常用的功能大部分在软件界面体现了,还有一些不常用的在菜单里面也能找到。VBA宏代码相对Excel公式来说,用的频率要少些,但是VBA有他特殊的用途。

下面说一下VBA和SQL语句结合使用怎么实现表格数据一键查询,【注:SQL全称是结构化查询语言,是一种数据库查询和程序设计语言,对这方面感兴趣的朋友可以自己了解一下。】

举个例子:用EXCEL VBA SQL语句查询总成绩大于290分的学生

一、正常的操作步骤是:

1、用Excel打开表格,点击插入——数据透视图

vba 执行sql查询语句


2、在数据透视图界面,选择行标签字段和求和项字段

vba 执行sql查询语句

vba 执行sql查询语句


3、把行标签和求和项表格数据进行排序,选出成绩大于290的记录

用数据透视图功能操作很简便,除此之外用分类汇总功能也可以实现,只不过前者更方便些。


二、EXCEL VBA SQL语句实现表格数据的一键查询

1、用excel打开表格,按alt+F11打开VBA工程界面,在个人工作簿里新建模块,在模块的代码区域输入下面的代码

vba 执行sql查询语句

2、根据实际需要在SQL变量区域输入自己想要的查询代码,保存,F5运行,注意[表名$]这种写法

vba 执行sql查询语句

以上是用Excel VBA SQL语句实现了表格查询的一键自动化操作(按ALT+F8),在规则不经常变动的情况下使用很实用,以下是代码供复制粘贴。


Sub SQL查询()

    Dim cnn As Object, rs As Object, SQL As String

    Set cnn = CreateObject("adodb.connection") '创建数据库连接

    cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ActiveWorkbook.FullName

    Set rs = CreateObject("adodb.recordset") '创建一个数据集

    SQL = "select 姓名,sum(成绩) from [原始数据$] group by 姓名 HAVING sum(成绩)>290" '设置SQL查询语句

    Set rs = cnn.Execute(SQL) '执行查询

    ActiveWorkbook.Worksheets(2).Cells.ClearContents

    Dim i As Integer

    For i = 1 To rs.Fields.Count

        ActiveWorkbook.Worksheets(2).Cells(1, i) = rs.Fields(i - 1).Name '填写标题到表2

    Next

    ActiveWorkbook.Worksheets(2).Range("a2").CopyFromRecordset rs '复制记录集到表2

    rs.Close

    Set rs = Nothing

    cnn.Close

    Set cnn = Nothing

End Sub


相关文章

文章评论

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

标签云

站长特荐